import cv2
import numpy as np
import os


# 用于将一张图像二值化并保存到新的文件中。
def binarization(filepath, newfilepath):
    # 检查文件是否存在，如果不存在则抛出异常。
    if not os.path.exists(filepath):
        raise "{} 不存在".format(filepath)

    # 如果新文件路径已经存在，直接返回，不做任何处理。
    if os.path.exists(newfilepath):
        return

    # 使用OpenCV读取原始图像文件。
    image = cv2.imread(filepath, cv2.IMREAD_COLOR)

    # 将原始彩色图像转换为灰度图像。
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 使用阈值 p1 和 p2 对灰度图像进行二值化处理。
    _, binary_image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_OTSU)

    # 将二值化后的图像保存到新的文件路径。
    cv2.imwrite(newfilepath, binary_image)
